import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;

/**
 * 游戏管理器（单例）
 * 
 * 功能：
 * 1. 管理游戏全局状态
 * 2. 处理场景切换和加载
 * 3. 协调各个系统之间的通信
 * 4. 管理游戏生命周期
 * 
 * 特点：
 * 1. 单例模式确保全局唯一
 * 2. 提供全局访问点
 * 3. 统一的事件分发
 * 4. 资源加载和管理
 */
@ccclass('GameManager')
export class GameManager extends Component {
    private static _instance: GameManager | null = null;
    
    public static get instance(): GameManager {
        if (this._instance === null) {
            throw new Error('GameManager instance is not created yet!');
        }
        return this._instance;
    }

    onLoad() {
        if (GameManager._instance === null) {
            GameManager._instance = this;
        } else {
            this.node.destroy();
            return;
        }
    }

    start() {
        this.initGame();
    }

    private initGame() {
        // 初始化游戏配置
        this.initConfig();
        // 初始化事件系统
        this.initEventSystem();
        // 初始化网络系统
        this.initNetworkSystem();
    }

    private initConfig() {
        // TODO: 加载游戏配置
    }

    private initEventSystem() {
        // TODO: 初始化事件系统
    }

    private initNetworkSystem() {
        // TODO: 初始化网络系统
    }
} 